home *** CD-ROM | disk | FTP | other *** search
-
- jmp_buf env;
- int valid_env = 0;
-
- void sig_handler(sig)
- int sig;
- {
- assert(sig >= 0 && sig < NSIG);
-
- if (!actions[sig]) {
- /* always an error except when sig == 0 */
- if (sig == 0) return;
- fprintf(stderr,"unexpected signal (%d) delivered\n", sig);
- } else {
- signal(sig, sig_handler);
- eval(actions[sig]);
- }
-
- if (valid_env) longjmp(env,1);
- }
-
- Listing 2
-
-